import ajax from './ajax'

/**
 * 获取官方商城列表
 * @param {Object} params - 请求参数
 * @param {number} params.currentPage - 当前页码
 * @param {number} params.limit - 每页数量
 * @param {string} [params.productType] - 商品类型（可选）
 * @returns {Promise} API响应
 */
export function getOfficialStoreList(params) {
  return ajax.post('/officialStore/list', params)
}

/**
 * 获取所有商品（管理端）
 * @param {Object} params - 请求参数
 * @param {number} params.currentPage - 当前页码
 * @param {number} params.limit - 每页数量
 * @param {string} [params.productType] - 商品类型（可选）
 * @param {string} [params.productName] - 商品名称（可选）
 * @param {string} [params.status] - 商品状态（可选）
 * @returns {Promise} API响应
 */
export function getAllProducts(params) {
  return ajax.post('/officialStore/allList', params)
}

/**
 * 购买商品
 * @param {Object} params - 购买参数
 * @param {number} params.productId - 商品ID
 * @param {number} params.quantity - 购买数量
 * @returns {Promise} API响应
 */
export function purchaseProduct(params) {
  return ajax.post('/officialStore/purchase', params)
}

/**
 * 获取购买记录
 * @param {Object} params - 请求参数
 * @param {number} params.currentPage - 当前页码
 * @param {number} params.limit - 每页数量
 * @returns {Promise} API响应
 */
export function getPurchaseRecords(params) {
  return ajax.get('/officialStore/purchaseRecords', { params })
}

/**
 * 商品上下架
 * @param {Object} params - 请求参数
 * @param {number} params.productId - 商品ID
 * @param {number} params.status - 商品状态
 * @returns {Promise} API响应
 */
export function switchProductStatus(params) {
  return ajax.post('/officialStore/switch', params)
}

/**
 * 添加商品
 * @param {Object} params - 请求参数
 * @param {string} params.productName - 商品名称
 * @param {string} params.productType - 商品类型
 * @param {number} params.price - 商品价格
 * @param {number} params.stockQuantity - 库存数量
 * @param {string} params.itemIds - 道具ID列表
 * @param {string} params.description - 商品描述
 * @param {number} params.currencyType - 货币类型
 * @param {number} params.status - 商品状态
 * @returns {Promise} API响应
 */
export function addProduct(params) {
  return ajax.post('/officialStore/add', params)
}

/**
 * 修改商品
 * @param {Object} params - 请求参数
 * @param {number} params.id - 商品ID
 * @param {string} [params.name] - 商品名称
 * @param {string} [params.description] - 商品描述
 * @param {number} [params.price] - 商品价格
 * @param {number} [params.currencyType] - 货币类型
 * @param {number} [params.stockQuantity] - 库存数量
 * @param {string} [params.productType] - 商品类型
 * @param {string} [params.itemIds] - 道具ID列表
 * @param {number} [params.status] - 商品状态
 * @returns {Promise} API响应
 */
export function updateProduct(params) {
  return ajax.post('/officialStore/update', params)
}

/**
 * 删除商品
 * @param {number} id - 商品ID
 * @returns {Promise} API响应
 */
export function deleteProduct(id) {
  return ajax.get(`/officialStore/delete/${id}`)
}

/**
 * 上传图片
 * @param {File} file - 图片文件
 * @param {Function} onUploadProgress - 上传进度回调函数
 * @returns {Promise} API响应
 */
export function uploadImage(file, onUploadProgress) {
  const formData = new FormData()
  formData.append('file', file)
  
  return ajax.post('/officialStore/uploadImage', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    onUploadProgress: onUploadProgress
  })
}
